﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Contract.Business.Process;
using Contract.Business.Entity;
using Contract.Business.Filter;

namespace Fast.Presentation.WinForms.Cruds
{
    public partial class FrmClienteHistorico : Form
    {
        public FrmClienteHistorico()
        {
            InitializeComponent();
        }

        #region Atributos

        BPVenda processVenda;
        public int? codigoCliente;
        public BEVenda entidade;

        #endregion

        #region Eventos
        private void frmClienteHistorico_Load(object sender, EventArgs e)
        {
            this.dgvVenda.AutoGenerateColumns = false;
            carregarVendas();
            entidade = null;
        }

        private void dgvVenda_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.dgvVenda.SelectedRows.Count > 0)
            {
                processVenda = new BPVenda();
                entidade = processVenda.ObterEntidade(int.Parse(this.dgvVenda.SelectedRows[0].Cells["dgvCodigo"].Value.ToString()));
                this.Close();
            }
            else
                Utilidades.ExibirMensagem("Nenhuma Venda foi selecionada");
        }
        #endregion

        #region Métodos
        private void carregarVendas()
        {
            if (codigoCliente.HasValue)
            {
                try
                {
                    processVenda = new BPVenda();
                    List<BEVenda> vendas = processVenda.ObterTodos(new FEVenda() { CodigoCliente = codigoCliente });

                    if (vendas.Count == 0)
                    {
                        Utilidades.ExibirMensagem("Este cliente não possui nenhuma compra realizada.");
                        this.Close();
                    }
                    else
                        this.dgvVenda.DataSource = vendas.OrderByDescending(q => q.Codigo).ToList();
                }
                catch (Exception ex)
                {
                    Utilidades.LogarError(ex);
                    MessageBox.Show(Utilidades.BuscarMensagemError());
                }
            }
            else
            {
                Utilidades.ExibirMensagem("Cliente inválido.");
                this.Close();
            }
        } 
        #endregion

    }
}
